package com.woniuxy.user.utils;

import com.aliyun.oss.OSS;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.PreDestroy;
import java.io.InputStream;

@Component
public class OssUtil {
    @Autowired
    private OSS oss;
    /**
     * 上传
     * @param bucketName 存储桶名
     * @param fileName   上传文件存储名
     * @param file       上传文件内容
     * @return
     */
    public String upload(String bucketName, String fileName, InputStream file){
        try {
            //将上传文件内容存储到oss
            oss.putObject(bucketName,fileName,file);
            //自定义一个文件访问路径返回给前端，前端需要的是一个访问上传文件的网络路径
            return "http://"+bucketName+"."+oss.getBucketLocation(bucketName)+".aliyuncs.com"+"/"+fileName;
        } catch (Exception e) {
            throw new RuntimeException("上传失败");
        }
    }

    /**
     * 删除
     * @param bucketName 存储桶名
     * @param fileName   要删除的文件名
     * @return
     */
    public Boolean delete(String bucketName, String fileName){
        try {
            //从oss中删除某个文件
            oss.deleteObject(bucketName,fileName);
            return true;
        } catch (Exception e) {
            throw new RuntimeException("上传失败");
        }
    }

    /**
    * 释放资源：关闭oss连接
    */
    @PreDestroy
    public void shutDown(){
        oss.shutdown();
    }
}
